package com.huangfuyi.datasource.service;

import com.huangfuyi.datasource.entity.EConnectConf;
import com.huangfuyi.datasource.entity.EDataDefineConf;
import com.huangfuyi.datasource.entity.EDataQueryCondition;
import com.huangfuyi.datasource.entity.EDataSelectConf;
import com.huangfuyi.datasource.entity.query.EDataQueryResult;

import java.util.List;
import java.util.Map;

// 数据源接口
public interface EDataSource {

    // 初始化数据源链接
    void init(List<? extends EConnectConf> connectInfo);

    // 测试连通性
    boolean connectionTest(EConnectConf connectInfo);

    // 关闭链接，回收资源
    void close();

    // 获取数据库链接信息实现类
    Class<? extends EConnectConf> getConnectInfoExample();

    // 数据定义
    int dataDefine(EDataDefineConf defineConf);

    // 获取数据源特有的数据定义信息实现类
    Class<? extends EDataDefineConf> getDataDefineInfoExample();

    // 数据插入
    int insert(EDataDefineConf defineConf, List<Map<String, Object>> data);

    // 数据删除
    int delete(EDataDefineConf defineConf, EDataQueryCondition condition);

    // 数据修改
    int update(EDataDefineConf defineConf, Map<String, Object> data, EDataQueryCondition condition);

    // 数据查询
    EDataQueryResult select(EDataDefineConf defineConf, EDataSelectConf selectConfig);

    // 数据查询
    EDataQueryResult select(EDataDefineConf defineConf, EDataSelectConf selectConfig, EDataQueryCondition condition);
}